home *** CD-ROM | disk | FTP | other *** search
/ Merciful 5 / Merciful - Disc 5.iso / software / p / personalpaint7.lha / PPaint / Rexx / SaveNewIcon.pprx < prev    next >
Encoding:
Text File  |  1997-04-19  |  4.7 KB  |  228 lines

  1. /* Personal Paint Amiga Rexx script - Copyright © 1997 LazaruZ  */
  2.  
  3. /* $VER: SaveNewIcon v1.0alfabetatheta :-) */
  4.  
  5. /** ENG
  6. Saves two selected brushes as NewIcon.
  7.  
  8. An existing or new .info file is selected using 
  9. the file requester. New icons are created by 
  10. entering a non existing filename (with or without 
  11. ".info") in the file entry.
  12.  
  13. If the entered .info filename does not
  14. exist SaveNewIcon will create a new
  15. .info file using:
  16.  
  17. PPaint:PPaint_Icons/def_NewNI.info
  18.  
  19. Make sure this file is available. This
  20. script also needs the 'injectbrush' utility
  21. in a known path. This utility is available
  22. from the NewIconv3 archive (aminet).
  23.  
  24. Script created by: Eric van Velthooven.
  25.  
  26. eric@stack.nl
  27.  
  28. 'LazaruZ' efnet #amiga
  29.  
  30. http://www.stack.nl/~eric/prowb.html
  31. */
  32.  
  33. IF ARG(1, EXISTS) THEN
  34.     PARSE ARG PPPORT
  35. ELSE
  36.     PPPORT = 'PPAINT'
  37.  
  38. IF ~SHOW('P', PPPORT) THEN DO
  39.     IF EXISTS('PPaint:PPaint') THEN DO
  40.         ADDRESS COMMAND 'Run >NIL: PPaint:PPaint'
  41.         DO 30 WHILE ~SHOW('P',PPPORT)
  42.              ADDRESS COMMAND 'Wait >NIL: 1 SEC'
  43.         END
  44.     END
  45.     ELSE DO
  46.         SAY "Personal Paint could not be loaded."
  47.         EXIT 10
  48.     END
  49. END
  50.  
  51. IF ~SHOW('P', PPPORT) THEN DO
  52.     SAY 'Personal Paint Rexx port could not be opened'
  53.     EXIT 10
  54. END
  55.  
  56. ADDRESS VALUE PPPORT
  57. OPTIONS RESULTS
  58. OPTIONS FAILAT 10000
  59.  
  60.     txt_title_req = 'NewIcon Saver'
  61.     txt_file_req  = 'Select a .info file'
  62.     txt_oldclient = 'This script requires a newer version of Personal Paint'
  63.     txt_notsize   = 'Brushes not the same size:'
  64.     txt_gad_1     = '_First brush:'
  65.     txt_gad_2     = '_Second brush:'
  66.     txt_gad_f     = '_Enable FORCE option'
  67.     txt_nodef     = 'Template .info file not present in PPaint:PPaint_Icons/'
  68.     txt_toobig    = 'Maximum icon size is 93x93'
  69.     txt_injf      =    'Injectbrush failed, are you sure it is in a known path?'
  70.     txt_injff     =    'Injectbrush failed for some reason, try using FORCE'
  71.  
  72.     def_NI          = "Ppaint:PPaint_Icons/def_NewNI.info"
  73.  
  74. Version 'REXX'
  75. IF RESULT < 7 THEN DO
  76.     RequestNotify 'PROMPT "'txt_oldclient'"'
  77.     EXIT 10
  78. END
  79.  
  80. Request '"'txt_title_req'" ' ||,
  81.     '"CYCLE = ""'txt_gad_1'"", 9, 0, 1,2,3,4,5,6,7,8,9 ' ||,
  82.     ' CYCLE = ""'txt_gad_2'"", 9, 1, 1,2,3,4,5,6,7,8,9 ' ||,
  83.           ' CHECK = ""'txt_gad_f'"", 1 " '
  84.     
  85. IF RC ~= 0 THEN
  86.     EXIT 0
  87. br1   = RESULT.1 + 1
  88. br2   = RESULT.2 + 1
  89. force = RESULT.3
  90.  
  91. LockGui
  92.  
  93. SetCurrentBrush 'BRUSH' br1
  94. GetBrushAttributes 'WIDTH'
  95. wid1 = RESULT
  96. GetBrushAttributes 'HEIGHT'
  97. hei1 = RESULT
  98.  
  99. SetCurrentBrush 'BRUSH' br2
  100. GetBrushAttributes 'WIDTH'
  101. wid2 = RESULT
  102. GetBrushAttributes 'HEIGHT'
  103. hei2 = RESULT
  104.  
  105. IF ''wid1~=wid2|hei1~=hei2'' THEN DO 
  106.     RequestNotify 'PROMPT "'txt_notsize' brush1='wid1'x'hei1', brush2='wid2'x'hei2'"'
  107.     UnlockGUI
  108.     EXIT 0
  109. END
  110.  
  111. IF ''hei1>93|wid1>93'' THEN DO
  112.     RequestNotify 'PROMPT "'txt_toobig'"'
  113.     UnlockGUI
  114.     EXIT 0
  115. END
  116.  
  117. SetCurrentBrush br1
  118. SaveBrush FILE "T:pp2ni_1" FORMAT 'ilbm'
  119. SetCurrentBrush br2
  120. SaveBrush FILE "T:pp2ni_2" FORMAT 'ilbm'
  121.  
  122. IF ''EXISTS("ENV:pp2ni_pad")''=1 THEN DO
  123.     padname = LoadSet('pad')
  124. END
  125. ELSE DO
  126.     Get 'SETTING "PATHPIC"'
  127.     padname = RESULT
  128. END
  129.  
  130. Get 'SETTING "FILREQ"'
  131. filreqset = RESULT
  132. Set 'FORCE "FILREQ=0x3B"'
  133.  
  134. RequestFile '"'txt_file_req'" PATH='padname
  135. IF RC ~= 0 THEN DO
  136.     ADDRESS COMMAND
  137.     ''delete '>nil: T:pp2ni#?'
  138.     ADDRESS VALUE PPPORT
  139.     Set 'FORCE "FILREQ='filreqset'"'
  140.     UnlockGui
  141.     EXIT 0
  142. END
  143. iconname = RESULT
  144.  
  145. IF RIGHT(''iconname'',6) ~= '.info"' THEN DO
  146.         iconname = LEFT(''iconname'',LENGTH(''iconname'')-1)
  147.     iconname = iconname'.info"'
  148. END
  149.  
  150. IF ''INDEX(''iconname'',"/")'' = 0 THEN DO
  151.     padname = LEFT(''iconname'',INDEX(''iconname'',":"))'"'
  152. END
  153. ELSE DO
  154.     padname = LEFT(''iconname'',LASTPOS('/',''iconname''))'"'
  155. END
  156.  
  157. ADDRESS COMMAND
  158.  
  159. IF ~EXISTS(CENTER(iconname,LENGTH(iconname)-2)) THEN DO
  160.     IF ''EXISTS(''def_NI'')'' = 1 THEN DO
  161.         ''copy def_NI iconname
  162.     END
  163.     ELSE DO
  164.         ''delete '>nil: T:pp2ni#?'
  165.         
  166.         ADDRESS VALUE PPPORT
  167.         Set 'FORCE "FILREQ='filreqset'"'
  168.         UnlockGui
  169.         RequestNotify 'PROMPT "'txt_nodef'"'
  170.         EXIT 0
  171.     END
  172. END
  173.  
  174. IF force = 1 THEN DO
  175.     ''injectbrush '>T:pp2ni_out' iconname 'T:pp2ni_1 T:pp2ni_2 FORCE'
  176. END
  177. ELSE DO
  178.     ''injectbrush '>T:pp2ni_out' iconname 'T:pp2ni_1 T:pp2ni_2'
  179. END
  180. IF RC ~= 0 THEN DO
  181.     ADDRESS COMMAND
  182.     ''delete '>nil: T:pp2ni#?'
  183.     ADDRESS VALUE PPPORT
  184.     Set 'FORCE "FILREQ='filreqset'"'
  185.     
  186.     IF force =1 THEN DO
  187.         RequestNotify 'PROMPT "'txt_injf'"'
  188.     END
  189.     ELSE DO
  190.         RequestNotify 'PROMPT "'txt_injff'"'
  191.     END    
  192.     UnlockGui
  193.     EXIT 0
  194. END
  195.  
  196. ''delete '>nil: T:pp2ni#?'
  197.  
  198. ADDRESS VALUE PPPORT
  199.  
  200. CALL SaveSet('pad', padname)
  201. Set 'FORCE "FILREQ='filreqset'"'
  202. UnlockGui
  203. EXIT 0
  204.  
  205.  
  206. SaveSet: PROCEDURE
  207.     sname = ARG(1)
  208.     val = ARG(2)
  209.  
  210.     IF OPEN('settingfile', 'ENV:pp2ni_'sname, 'W') THEN DO
  211.         CALL WRITECH('settingfile', val)
  212.         CALL CLOSE('settingfile')
  213.     END
  214.  
  215.     RETURN
  216.  
  217.  
  218. LoadSet: PROCEDURE
  219.     sname = ARG(1)
  220.     set_fname = 'ENV:pp2ni_'sname
  221.  
  222.     IF OPEN('settingfile', set_fname, 'R') THEN DO
  223.         val = READLN('settingfile')
  224.         CALL CLOSE('settingfile')
  225.     END
  226.  
  227.     RETURN val
  228.